查看原文
其他

Apollo公开课丨Apollo行为轨迹预测技术

Jiacheng Pan Apollo开发者社区 2022-07-29



视频链接:

点击观看



行为轨迹预测是对无人车周围的障碍物未来n秒的行为轨迹进行预测。在整个自动驾驶系统中,它是一个承上启下的模块,上面的是原始的输入信息,像感知、定位、高精地图。下面是规划模块,把动态的预测数据给规划模块,指导无人车路径、速度方面的规划。


在做行为轨迹预测的时候,有几点需要注意。首先是预测一个物体未来轨迹的时候,要考虑物体不同的特征,比如说周围的障碍物分为两类,一类是机动车障碍物,另一类是行人障碍物,它们有不同行为特征,要用不同的模型分别预测各自的轨迹。


▲指导思想


其次,因为预测模块用了很多模型或者机器学习,对于不同类型的输入需要选择比较合适的模型分别提取特征。比如说对于障碍物自身,要提取包括形状、长、宽、高以及感知到的历史运动状态。对于障碍物周围静态环境,要提取道路信息、路权等特征。对于障碍物周围动态环境,要把其它障碍物的信息提取出来。


最后是应用和算力上的考量,我们要结合实际的算力采用合适的算法,这就需要对预测做优先级的划分。


下面分别介绍机动车行人轨迹预测方法


要进行机动车行为轨迹预测,需要先分析机动车的行为特征是什么。概括起来,机动车的行为特征大概有三点,第一是轨迹受到车辆动力学的限制第二是强依赖于地理信息,如车道线、路口形状等。第三是常规道路和交通路口的行为特征区别比较大。基于此,我们可以先预测车辆的意图,再按照运动学原理预测未来的轨迹。对于常规道路和交通路口可以进一步采用不同的模型。


▲机动车行为轨迹预测综述


常规道路机动车意图预测模型的输入是障碍车自身运动状态历史车道中心线信息。如下图所示,用红点分别标出障碍车历史运动状态的位置,此外,要考虑到周围静态环境的信息,比如车道中间线的信息。有了这些输入信息,就可以运用模型对输入信息进行特征抽取,辅助车辆轨迹预测。


▲障碍车历史运动状态


预测模型会对输入信息进行处理。首先用编码器对车辆的历史运动轨迹进行编码。因为车辆运动轨迹是持续性较强的输入,所以用类似RNN的模型对障碍物本身进行编码。其次,我们会对每一个车道进行编码。在此基础上,模型通过MLP对多个车道的编码进行处理,应用全局池化操作将所有车道的信息聚集在一起,得到对整个环境的编码。最后将每条车道的意图转化为概率形式,如下图所示,得到四个概率,分别对应的障碍车未来选择某条车道的概率。


▲预测模型对输入信息进行处理


总结一下,常规道路行为预测的输入是障碍车自身的运动状态历史,车道中心线信息。模型是车道选择预测神经网络。输出是选择车道的概率,损失函数是交叉熵


因为交通路口的情况比较复杂,很多车不会按照明确标注的车道行驶,车与车交互的可能性高于常规车道,所以我们用一种模型,把自身运动状态信息和车道信息以及周围其它障碍物的动态信息进行统筹管理。


首先以障碍车的朝向为参考方向,划分出12个扇形区域,记录每个扇形区域有没有离开该路口车道。如下图所示,在这种情况下,有三种出口对应着左转、直行右转的情况。将问题转化为12元分类的问题,最后要做的是预测车出去的概率是多少。


▲机动车意图预测—交通路口


这里要解决12元的分类问题。对于每一个障碍物都会有一张语义图作为输入,通过比较成熟的深度神经网络可以较好的抽取图像的特征。此外,我们把Mask信息(哪一个为出口车道信息)作为另外一个输入,经过一个简单的MLP的网络就可以输出12个车道的概率。


▲解决12元分类问题方法


下面介绍一下考虑与主车交汇的轨迹预测方法。如下图所示,红色车是要预测未来轨迹的障碍车,假如我们预测出了这个车选择变道的概率是80%,沿着本车道行驶的概率是20%,通过以下几步进行优化。


▲考虑与主车交互的轨迹预测方法


首先对轨迹进行信息采样。然后通过代价函数计算出每条轨迹的代价,比如考虑的因素是纵向加速度,或者转弯时候的横向加速度,以及和主车之间的距离,把这三个作一个加权求和得到每一条轨迹的代价,之后根据意图选择代价最小的轨迹。最后通过已经计算好的代价,将代价轨迹转换成一个似然估计,得出具体的轨迹,就是障碍车最终选择的轨迹的概率


与机动车相比,行人行为具有不同的特征。首先,行人运动轨迹更加发散、多元化。其次,行人对于地理信息的依赖较小。最后,行人行为轨迹易受到周围障碍物的影响。正是基于这三点,采用的模型也会着重考虑各个障碍物之间交互的问题,对每个轨迹点进行概率化的预测。


▲行人行为轨迹需要的模型


那么行人行为轨迹需要什么样的模型呢?如上图所示,我们先考虑最简单的情况,假设只有一个人在走,这是一个比较简单的模型。本质上行人行走是一个有很强的时序性的问题,我们用类似于RNN的网络模型进行特征提取,将其不断的输入到LSTM中。在LSTM中,对行人从过去到观测时间为止的运动轨迹进行编码。对于将来的预测还是通过LSTM进行,通过这个轨迹点我们假设行人已经在这里,用同样的方式输入到LSTM,预测下一个轨迹点,比如说预测未来3秒、6秒的轨迹。


▲复杂情况下,行人轨迹预测


对于一些比较复杂的情况,类似于刚才的情况,如上图所示,绿色或者黄色点的行人跟红色点的行人,他们并排走在一起。假设要预测蓝色点的行人的行为,除了单个行人需要的信息,还包括一些周围其它障碍物的信息以及其他的行人信息。还是可以用LSTM做编码,对于要预测的行人,可以在它周围画一个区域,在区域内假如没有行人的,填充为零,有行人就把它的隐藏状态ht放到对应的区域里面,有好几个行人就对状态编码进行叠加。还用刚才的预测方法,就可以做出考虑行人之间交互的预测,预测结果就是蓝色行人会避开其他行人,而不是一直傻傻的往前走。


▲行人轨迹预测的总结


总结一下,行人轨迹预测的输入首先是障碍物自身的运动状态历史周围其它障碍物的信息。模型是基于注意力机制的LSTM轨迹点预测神经网络。输出是障碍物未来n秒的轨迹点。损失函数会采取两种不同的函数,一种是预测轨迹点的X和Y,用MSE来作损失函数。另一种是输出一个5维的值,包括UX和UY,采用二维正态分布最大似然估计预测。



▲基于规则的优先级划分系统


障碍物行为轨迹预测的优先级划分如上图所示。目前我们采用一些相对简单的系统,完全基于优先级划分。举几个例子简单介绍一下,如左边图示的白色车是主车,当它要变道的时候,行驶道路的前车,目标车道的后车和前车对主车的影响都比较大。


我们对这三辆车,以及其它区域的车和人,任何障碍物都采取比较谨慎的模型进行预测,相当于对它做一个正常处理。而远处的车做忽略处理。中间的图是在路口里面主车即将进入路口的时候,路口内所有的车辆我们都认为是要谨慎处理的车辆,也包括人,同样也要考虑。最右边的图是主车从小路口汇入到大路口,在没有信号灯的情况下,要考虑主车规划轨迹最近的车,不仅对它作为一个谨慎处理,还会对T型区域做一个谨慎的处理。



▲行为轨迹预测的五大挑战


行为轨迹预测的挑战有五点。第一是预测模块的上游是感知模块,感知模块给的信息不多,感知信息的信噪比过低会给预测模块造成非常大的模糊。


第二是障碍物的意图不明确如一辆车在一条可以直行又可以左转的道路上行驶时,但还没有进入到分叉路段时,就无法知道它是直行还是左转。意图不明确导致预测模型也会遇到一些问题。


第三是障碍物被遮挡。


第四是一些突发事件或者违背交规的障碍物问题,因为机器学习是一个大数据的模型,对于常规问题有比较好的考量,但是对突发事件的处理还不太好。


第五是复杂模型的线上预测耗时,因为车载的计算单元计算能力有限,怎样用它们做更复杂的模型预测,是一个不小的挑战。


以上就是本次关于Apollo行为轨迹预测技术课程的全部内容。欢迎大家提出问题,进入社群进行交流。更多相关技术干货也可以继续关注后续的课程。



原版PPT获取方式:


进入公众号

回复关键词『0704轨迹预测

根据提示获得原版PPT资料






您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存